升级本地环境及依赖
AI 时代的技术更迭以"周"为单位:课程录制期间,主讲使用的编码模型就完成了一次换代(GLM 5.1 → 5.2),Claude Code 也从 2.1.150 一路升到 2.1.226。依赖要更新、环境要升级、模型要跟新——这些在传统开发里"能拖就拖"的事,在这一节变成一个独立话题。核心结论先给出:环境升级自己动手(命令就几条),依赖升级交给 AI(扫描、分析、升级、验证一条龙,人只做确认和决策)。
一、为什么升级问题值得单独一节
三个现实压力:
- 模型换代快。上一节课还在用的模型,下个月可能就有更强更便宜的替代;工具的"最佳实践"跟着模型走。
- CLI 工具近乎日更。Claude Code 的 npm 包发布节奏非常密,一个月内跨越几十个小版本是常态,旧版本的行为和新文档对不上。
- 依赖大版本升级有破坏性。TypeScript、ESLint、markdown-it 这类工具升大版本后用法会变,盲升会直接报错——这正是 AI 擅长收尾的脏活。
升级分三层:本地 Node 环境 → 全局 CLI 工具(Claude Code / Codex)→ 项目依赖。前两层是手工活,第三层交给 AI。
二、升级本地 Node 环境
版本管理工具
主讲在 macOS 上使用 asdf 管理各类语言的运行时版本;跨平台替代是 mise(同样支持 macOS,Windows 建议 WSL),Windows 原生另有 nvm-windows 可选。嫌命令记不住,直接让 AI 推荐:"帮我推荐并配置一个 Node 版本管理工具"。
当前版本现状(2026-11-07 核实)
| 版本线 | 状态 |
|---|---|
| Node 22 | Maintenance LTS(维护期) |
| Node 24(Krypton) | Maintenance LTS(2026-10 起,随 26 转 LTS) |
| Node 26(Lithium) | Active LTS,生产推荐 |
| Node 27 | Current(Alpha,2026-10-29 发布) |
来源:nodejs.org 官方发布页。另注意 Node.js 官方已公告调整发版节奏:自 Node.js 27 起改为每年一个大版本,不再区分奇偶数版本——每个大版本经 6 个月 Current 加 6 个月 Alpha 后进入 LTS(Node.js 官网,2026-11-07 核实)。本节演示安装的是当时的 Node 24.19.0。
asdf 升级三步
# 1. 安装指定 LTS 版本(自动适配 Intel / ARM 架构)
asdf install nodejs 24.19.0
# 2. 切换到该版本(新版本 asdf 用 set,替代旧的 local/global)
asdf set nodejs 24.19.0
# 3. 验证
node -v
bash
版本号去 Node.js 官网查当前 Active LTS 即可,不追求最新 Current。
一个必踩的坑:全局安装的 npm 包是按 Node 版本隔离的。切换到新版本后,原来 npm install -g 装的 claude、codex 等 CLI 会"消失"(命令找不到)——它们还挂在旧版本的目录下。解法见下一节:重装一遍即可,配置不会丢。
三、升级全局 AI CLI(Claude Code / Codex)
Claude Code:卸载重装就是升级
最直接的方式是覆盖安装:
npm install -g @anthropic-ai/claude-code@latest
bash
主讲的做法是给终端配一个升级别名,先卸载再装最新:
# ~/.zshrc
alias ccup='npm uninstall -g @anthropic-ai/claude-code && npm install -g @anthropic-ai/claude-code@latest'
bash
以后升级就是一句 ccup。这个别名本身也可以让 AI 帮你写:"帮我写一个终端 alias,可以更新全局的 Claude Code 版本,使用 npm 命令"。
Codex 同理
npm install -g @openai/codex@latest
bash
AI 给出的写法是直接覆盖安装(不需要先卸载),与卸载重装效果等价。
为什么重装不影响配置和会话
不管是覆盖安装还是卸载重装,用户数据与 npm 包是分离的:
- Claude Code 的配置和会话在
~/.claude/目录与~/.claude.json,与全局包的安装目录互不相干; - Codex 的配置在
~/.codex/目录,同样独立。
所以重置包版本不碰登录态、全局配置、历史会话,放心升。
四、项目依赖升级:交给 AI 的完整流程
以前的痛
递归更新 monorepo 依赖需要借助 npm 生态的工具(如 npm-check-updates、nx 等),但真正的坑在后面:大版本升级带来的用法变化(TypeScript、ESLint、markdown-it 都是常客)会让项目直接报错,人工一个个修非常耗时。
现在的做法:一段提示词 + 人工确认
在项目根目录对 Claude Code 说:
读取 packages 目录以及 packages 中子项目里的 package.json,
看看有哪些需要更新的依赖包。
按照语义化版本号规则,先更新次版本(minor)和补丁(patch),
再来处理大版本(major)更新。
先做好 commit 备份。
先分析项目的依赖变化,我确认同意之后,你再执行更新,
最终完成项目依赖的完整升级。
text
执行效果(实测):约 3 分钟产出分析报告——minor/patch 更新标记为安全;major 更新单独列出(当时涉及 TypeScript、ESLint、Shiki 相关、markdown-it 等)。
major 升级让 AI 做决策,但要给约束
对每个大版本升级,追问一句:
看看这个构建工具对应的下游工具链默认的 TS 版本是什么,
可以对应的进行升级,不追求最新版本。
text
原则:跟随工具链生态的默认版本,不抢最新。这一步逐项确认后让 AI 继续执行。
验证闭环
升级完成后:
- 跑全量测试:"更新完成之后进行完整的测试";
- 本地跑起来看:启动 dev 服务,肉眼核对页面(当时 markdown 渲染左侧样式正常、右侧有零星报错);
- 报错直接丢给 AI:把浏览器 Console 里的错误原样发给 AI 修——这类升级残留的小错误对大模型来说非常好解;
- AI 修不动时上浏览器 MCP:调试多个回合仍未定位的样式问题,接入浏览器操作类 MCP 工具(开启调试模式让 AI 自己看页面),比截图描述高效得多。
工作流细节:分支保护与经验沉淀
- 升级期间配置好的 git 工作流会自动生效:AI 在独立分支上升级,不影响你正在调试的主线,多个会话可以并行开发;
- 升级完成后让 AI 删除过渡分支,并补一句"记住:以后合并后自动删除过渡分支"——这类操作偏好沉淀进记忆/CLAUDE.md,下次不用再交代。
五、小结
- 环境升级:asdf
install+set两条命令;切 Node 版本后全局 CLI 会丢(按版本隔离),重装即可,配置在~/.claude/~/.codex不受影响。 - CLI 升级:
npm install -g xxx@latest覆盖安装;配个 alias 一劳永逸。 - 依赖升级:提示词驱动——先 minor/patch 后 major、先分析后执行、commit 备份、全量测试验证、Console 报错直接丢给 AI。
- major 升级的原则是跟工具链默认版本,不追最新。
- 这套流程不限于前端:Go、Python 项目的依赖升级同理,换个包管理器命令即可。
下一节解决另一个"换"的问题:AI 服务涨价或工具切换时,如何把 CLAUDE.md、rules、skills、hooks 这一整套资产迁移到新工具,以及如何用免费的 agentmemory 实现跨会话、跨 agent 的记忆。
↑